Many growing businesses are challenged with ensuring that their data processing systems keep pace with expanding demands. This is particularly true for rapidly growing e-commerce companies, but also applies to other companies as well.
Another challenge facing many businesses is that of predicting and handling the peak loads that will be required to keep up with the day-to-day operations. For example, if there is a delay in gathering year-end data, there may be little time to process the data before the results must be published or otherwise released. The processing power required to handle such year-end data on such short notice may exceed the processing power of the available computer resources. In another example, e-commerce servers may experience severe peak loads during certain times of the year, such as the Christmas season. The extent of these peak loads is also often difficult to predict.
One way to increase processing power is to acquire additional processing systems. This can be expensive, and is not desirable if the additional systems are only required to address peak loads that exist during relatively short time periods. Another way to increase processing power is to modify existing systems. This may involve installing additional processors or memory, for example. However, system updates may necessitate the termination of normal processing activities so that the system can be powered down or otherwise placed in a state that accommodates maintenance. This can significantly disrupt the operations of the business. Moreover, updating a system to take into account peak demand is undesirable if this worst-case scenario rarely occurs.
One way to address the foregoing challenges involves allowing for the temporary increase of resources only when those resources are required to achieve a desired performance level. This is accomplished by including additional resources such as processors and memory in the data processing system when it is provided to the customer. However, only the resources that are required to provide the performance level purchased by the customer are enabled for use during normal operation. To temporarily or permanently increase the performance level of the data processing system, the customer may purchase an authorization key to enable the use of additional hardware resources. The authorization key may, for example, identify which additional processing resources are being authorized for use, the maximum time the additional resources are authorized for use, and an expiration date. This authorization key thereby allows selective increases in performance level to accommodate unplanned increases in performance requirements. When peak demand has ended, the customer may return to average processing levels without incurring the cost burden associated with permanently upgrading a system or obtaining additional systems.
Commonly-assigned U.S. patent application entitled “Authorization Key System for Selectively Controlling the Performance of a Data Processing System”, Ser. No. 09/676,162 filed Sep. 29, 2000, and which is incorporated herein by reference in its entirety, discloses an exemplary system of the type described in the foregoing paragraph. According to one embodiment of the disclosed system, the customer purchases a first authorization key that is delivered with the system. This key enables a first set of processing resources. If the customer later desires the option of enabling additional resources to increase the performance of the system, a second authorization key may be purchased.
Prior art systems such as that described above generally select performance level by identifying the system resources that will be enabled. For example, authorization keys provided with the system specifically identify the Instruction Processors (IPs) that are enabled for use. If one of these identified IPs encounters some type of hardware problem, the customer is not allowed to instead employ one of the other available processors that is not specified by the key. Thus, encountered hardware problems may result in degraded throughput.
Another aspect of prior art systems involves the fact that authorization keys specify the number of IPs that may be enabled within the system, not the processing power actually available from those processors. However, the processing power that will be obtained from a predetermined number of IPs varies based on architectural characteristics of the data processing system. For example, four IPs that are coupled to a shared cache may provide significantly more processing throughput than two IPs that are operating from a first shared cache, and an additional two IPs utilizing a second shared cache. Thus, the customer may not always be obtaining peak performance from the enabled resources.
An additional consideration associated with prior art systems relates to the use of multiple partitions within a data processing system. A partition is a grouping of resources that are allocated to execute in a cooperative manner to perform one or more assigned tasks. For example, a partition may be formed that includes one or more predetermined IPs and Input/Output Processors (IOPs), and a predetermined memory range within a shared main memory. A second partition may be created to include different IPs and IOPs, and a second memory range. Each of these partitions may operate independently from the other so that a number of tasks may be executed in parallel within the system. When system needs change, the partitions can be re-defined. For instance, if needed, all resources may be allocated to the same partition and assigned to execute a high-priority task.
Some prior art keys are “partitionable”, meaning these keys support the use of partitioning. Partitionable keys can be activated in a single partition, or in multiple partitions. For example, assume a partitionable key allows six identified IPs to be enabled. These IPs may be allocated to the same partition. Alternatively, two partitions may be created, each including three of the identified IPs. When all six of the identified IPs are in use, the operating system prevents the use of any more IPs in any of the partitions.
Prior art partitionable keys do not account for system characteristics. For example, assume in the above example that three of the six identified IPs share a first cache, and the remaining three IPs share another cache. In this type of configuration, a single partition containing all IPs will deliver less processing power than two partitions that each include a cache and the respective IPs. This is true because of the loss of throughput that occurs when data must be shared between two caches of the same partition. Because the partitionable keys do not take into account such architectural considerations, the customer may not always be obtaining peak performance from the enabled resources. Additionally, since one partitioning configuration may provide more processing power than another configuration, the keys are difficult to price fairly.
What is needed, therefore, is an improved system and method for controlling and scaling the performance level of a data processing system in a manner that addresses the foregoing issues.